package Array.TwoIndex;

/**
 *11. 盛最多水的容器
  接雨水问题

 题目分析： 该题是求首尾两个区间的问题，所以通过条件判断左右边界的移动，实时求出当前面积，并与最大面积做比较。

 解题步骤：1： 定义一个max变量，用于表示 i---j的实时最大值
         2:  定义左右边界 ， 用i,j 表示左右区间边界
         3： 当左边界 i < 右边界 j时，执行步骤：
              找出当前 i 和 j 中高度较小的， 因为面积是以短边为底求值， high = min(height[i],height[j]),求出当前面积， area = high * (j-i)
              与最大值max做比较， max重新赋值，  max = MAX(max,area)
              因为是以短边求面积，所以当 左右边界 哪一边较小时，移动该边界 ，否则，移动另一边
        4： 返回max
 翻译代码，完成
 */
public class MaxArea {
    public int maxArea(int[] height) {
        int max = -1;
        int i = 0;
        int j = height.length - 1;
        while (i < j){
            int high = Math.min(height[i],height[j]);
            int area = high * (j - i);
            max = Math.max(max,area);
            if(height[i] < height[j]){
                i++;
            }else {
                j--;
            }
        }
        return max;
    }
}
